#Makefile para la generacion de librerias dinamicas y estaticas

CC := g++
DIRHEA := headers/

# Flags de compilación -----------------------------------------------
CXXFLAGS_EST := -I $(DIRHEA)
CXXFLAGS_DIN := -I $(DIRHEA) -fPIC
CXXFLAGS_MAIN_EST := -L. -lslerpest -I $(DIRHEA)
CXXFLAGS_MAIN_DIN := -L. -lslerpdin -I $(DIRHEA)
LDFLAGS_DIN := -shared

#Creacion de los elementos slerpdin, slerpest y main_din y main_est
all: slerpest slerpdin main_est main_din

#Libreria estatica
slerpest: slerp_est.o libslerpest.a

libslerpest.a: slerp_est.o
	ar rs $@ $^
	
slerp_est.o: slerp.cpp
	$(CC) $(CXXFLAGS_EST) -c $^ -o slerp_est.o

#Libreria dinamica
slerpdin: slerp_din.o libslerpdin.so

libslerpdin.so: slerp_din.o
	$(CC) -o $@ $(LDFLAGS_DIN) $^ 

slerp_din.o: slerp.cpp
	$(CC) $(CXXFLAGS_DIN) -c $^ -o slerp_din.o

#Compilado de main para biblioteca estatica
main_est: main.cpp
	g++ $^ $(CXXFLAGS_MAIN_EST) -o $@

#Compilado de main para biblioteca dinamica
main_din: main.cpp
	g++ $^ $(CXXFLAGS_MAIN_DIN) -o $@

#Proceso de limpieza
clean:
	rm -f *.o *.a *.so main_din main_est
